/*
Program : Matrix Assignment

Author : Vishwajeet Dusane
*/

#include<stdlib.h>
#include<stdio.h>
#include<iostream.h>
#include<math.h>


class Matrix
{
 public:
     double matrix[20][20],matrixTrans[20][20],tolerence[20][20];
     
  void generateMatrix();
  void transpose();
  int checkTolerence();
  double generateX();
  void printall();
   


};

int Matrix::checkTolerence()
{
  
  for(int i=0;i<20;i++)
  {
    for(int j=0;j<20;j++)
    {
    
     tolerence[i][j]=matrix[i][j]-matrixTrans[i][j]; 
        if(tolerence[i][j]<-0.000001)
	 tolerence[i][j]=tolerence[i][j]*-1;
     	   
    }   
  }

}

void Matrix::printall()
{
  for(int i=0;i<20;i++)
  {
    for(int j=0;j<20;j++)
    {
     cout<<" "<<matrix[i][j];
    }
    cout<<endl;
  }   

}
void Matrix::transpose()
{
  for(int i=0;i<20;i++)
  {
    for(int j=0;j<20;j++)
    {
      matrixTrans[j][i]=matrix[i][j];
    }
  }

} 
void Matrix::generateMatrix()
{
 double X;
  X=generateX();
  for(int i=0;i<20;i++)
  {
    for(int j=0;j<20;j++)
    {
      matrix[i][j]=cos((double)(2*3.14152942)/(i+j)*X);  
      
    }
  }  
 
}

double Matrix::generateX()
{
  double X;
    
   X=(double)(1+pow(10,(-1)*(rand()%10)));
   cout<<"X= "<<X;
   return X;
}

int main()
{
Matrix mat;
 mat.generateMatrix();
 mat.transpose();
 mat.printall();
 
return 0;
}

